<?php

namespace App\Policies;

use App\Models\User;
use Illuminate\Auth\Access\HandlesAuthorization;
// 授权策略类文件
class UserPolicy
{
    use HandlesAuthorization;

    /**
     * Create a new policy instance.
     *
     * @return void
     */
//    public function __construct()
//    {
//        //
//    }

    // 用户更新时的权限验证
    // 第一个参数默认为当前登录用户实例，第二个参数则为要进行授权的用户实例
    //默认情况下，不需要传递第一个参数，也就是当前登录用户至该方法内，因为框架会自动加载当前登录用户
    public function update(User $currentUser, User $user)
    {
        return $currentUser->id === $user->id;
    }

    // 删除用户动作相关的授权
    // 1只有当前登录用户为管理员才能执行删除操作；
    // 2删除的用户对象不是自己
    public function destroy(User $currentUser, User $user) {
        return $currentUser->is_admin && $currentUser->id !== $user->id;
    }

    // 用户不能关注自己
    public function follow(User $currentUser, User $user) {
        return $currentUser->id !== $user->id;
    }
}
